//125. 验证回文串
//如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后，短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。
// 字母和数字都属于字母数字字符。
// 给你一个字符串 s，如果它是 回文串 ，返回 true ；否则，返回 false 。



#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <stdlib.h>

char* ToSameLetter(char *s)
{
    char *temp = s;
    while(*temp != '\0')
    {
        if(*temp <= 'Z' && *temp >= 'A')
        {
            *temp = *temp + 32;
        }
        temp++;
    }
    return s;
}

char *OnlyLetter(char *s)
{
    char *s1 = ToSameLetter(s);
    char *s2 = (char*)malloc(sizeof(char)*strlen(s));
    char *s3 = s2;
    while(*s1 != '\0')
    {
        if((*s1 <= 'z' && *s1 >= 'a') || *s1 == ' ')
        {
            *s2 = *s1;
            s2++;
            s1++;
        }
        else s1++;
    }
    *s2 = '\0';
    return s3;
}

bool isPalindrome(char* s) 
{
    char *s1 = OnlyLetter(s);
    int left = 0;
    int right = strlen(s1) - 1;

    while(left < right && s1[left] == s1[right])
    {
        left++;
        right--;
        if(left < right && s1[left] == ' ')
        left++;
        if(left < right && s1[right] == ' ')
        right--;
    }
    if(left < right)
        return false;
    if(left == right)
        return true;
    return false;
}
int main()
{
    char s[100] = "  ";
    printf("%d\n",isPalindrome(s));
    return 0;
}